<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <!-- 实现一个 sleep 函数格式如下：

type sleep = (s: number) => Promise<void>;
    追问:

    实现一个 delay 函数格式如下，在 N 毫秒之后执行函数，并以函数结果作为返回值 -->

    <!-- function delay(func, seconds, ...args) {}
    
    // 在 3s 之后返回 hello, world
    await delay((str) => str, 3000, "hello, world");
    
    // 在 3s 之后返回 hello, world，第一个函数可返回 promise
    await delay((str) => Promise.resolve(str), 3000, "hello, world"); -->

    <script>
        const sleep = (time) => {
            return new Promise(resolve => {
                setTimeout(() => {
                    resolve()
                }, time);
            })
        }

        const delay = (fun, second, args) => {
            return new Promise((resolve, reject) => {
                setTimeout(() => {
                    Promise.resolve(fun(args)).then(resolve)
                }, second);
            })
        }
        // sleep(3000).then(() => {
        //     console.log(123);
        // })
        delay((str) => {
            console.log(str);
            return str
        }, 3000, "hello, world");
    </script>
</body>

</html>